package com.pengshun.modules.api.transport.service;

import com.pengshun.modules.api.transport.dto.FreightSettlementDto;
import com.pengshun.modules.api.transport.dto.TransportAbnormalOperationDto;
import com.pengshun.modules.common.PagePara;
import com.pengshun.modules.common.BaseResult;
import com.pengshun.modules.domain.FreightSettlementPrice;

public interface FreightSettlementService {

    /**
     * 司机结算列表
     * @param para
     * @return
     */
    BaseResult driverList(PagePara para);

    /**
     * 运输公司结算列表
     * @param para
     * @return
     */
    BaseResult transportList(PagePara para);

    /**
     * 货运结算详情
     * @param freightSettlementId
     * @return
     */
    BaseResult transportDetil(Long freightSettlementId);

    /**
     * 货运结算添加
     * @param para
     * @return
     */
    BaseResult save(FreightSettlementDto para) throws Exception;

    /**
     * 更新结算单
     * @param para
     * @return
     */
    BaseResult update(FreightSettlementDto para) throws Exception;

    /**
     * 结算退回
     * @param para
     * @return
     */
    BaseResult back(FreightSettlementDto para);

    /**
     * 结算支付
     * @param para
     * @return
     */
    BaseResult pay(FreightSettlementDto para) throws Exception;

    /**
     * 确认结算
     * @param para
     * @return
     */
    BaseResult sure(FreightSettlementDto para) throws Exception;

    /**
     * 司机异常运单
     * @param para
     * @return
     */
    BaseResult driverAbnormalList(PagePara para);

    /**
     * 运输公司异常运单
     * @param para
     * @return
     */
    BaseResult transportAbnormalList(PagePara para);

    /**
     * 异常申请处理
     * @param para
     * @return
     */
    BaseResult driverAbnormalApply(TransportAbnormalOperationDto para);

    /**
     * 申请处理详情
     * @param freightSettlementId
     * @return
     */
    BaseResult AbnormalApplyDetil(Long freightSettlementId);

    /**
     * 异常处理
     * @param para
     * @return
     */
    BaseResult AbnormalDispose(TransportAbnormalOperationDto para);

    /**
     * 异常详情
     * @param freightSettlementId
     * @return
     */
    BaseResult AbnormalDetil(Long freightSettlementId);

    /**
     * 接单流程
     * @param transportTakeCarriageId
     * @return
     */
    BaseResult transportStatus(Long transportTakeCarriageId);

    /**
     * 更新结算单 运价 货物价格
     * @param para
     * @return
     */
    BaseResult updatePrice(FreightSettlementPrice para);

}
